#include "proprietes.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


prop * creerPropriete(typage t, param* liste, int registre)
{
	prop* r = (prop*)malloc(sizeof(prop));
	r->type = t;
	r->listeParam = liste;
    r->reg = registre;
    //printf("------------ propriete creee avec les parametres : %i, %p, %i\n", t,liste, registre);
	return r;
}

prop* supprimerPropriete(prop* p){
	if(p)
	{
		if (p->listeParam)
		{
			supprimerAllParam(p->listeParam);
		}
		p->reg = -999;//a été dépilé
		p->type = VOID;//a été dépilé
		free(p);
		p = NULL;
	}
	else fprintf(stderr, "pointeur null prop* p\n" );
	return p;
}

// ajouter un type à la fin de la liste de paramètres
param* addParameterToList(param* liste, typage t)
{
	param* aux = (param*)malloc(sizeof(param));
	aux->next = NULL;
	aux->type = t;
	
	param* it = liste;

	if (it==NULL)
	{	
		it = aux;
		liste = it;
	}	
	else
	{
		while(it->next)
			it = it->next;
		it->next = aux;
	}	
	return liste;
}


// supprimer toute le liste de paramètres
param* supprimerAllParam(param* liste)
{
	while(liste->next)
		supprimerLastParam(liste);
	free(liste);
	liste = NULL;
	return liste;	
}

// supprimer le dernier élément de la liste
param* supprimerLastParam(param* liste)
{
	param* aux = liste;
	while(aux->next->next)
		aux = aux->next;
	free(aux->next);
	aux->next = NULL;
	return liste;
}
